package cliente.jogocliente.so;

import java.rmi.RemoteException;
import java.util.List;

import cliente.jogocliente.rn.RNJogador;

import comum.rn.RNJogada;
import comum.so.SOClienteEntrada;

public class SOJogoClienteSaidaImpl implements SOJogoClienteSaida{
	
	private SOClienteEntrada clienteEntrada;
	
	public SOJogoClienteSaidaImpl(SOClienteEntrada clienteEntrada){
		this.setClienteEntrada(clienteEntrada);
	}
	@Override
	public void desistirJogo(Long idSalaJogo) throws RemoteException{
		getClienteEntrada().desistirJogo(idSalaJogo);
		
	}
	@Override
	public boolean entrarMesa(int posicaoDesejada, Long idSalaJogo) throws RemoteException{
		return getClienteEntrada().entrarMesa(posicaoDesejada, idSalaJogo);			
	}

	@Override
	public void fazerJogada(Long idSalaJogo, RNJogada jogada) throws RemoteException {
		getClienteEntrada().fazerJogada(idSalaJogo, jogada);
	}


	@Override
	public void sairMesa(Long idSalaJogo) throws RemoteException {
		getClienteEntrada().sairMesa(idSalaJogo);				
	}

	@Override
	public void sairSalaEspera(Long idSalaJogo) throws RemoteException {
		getClienteEntrada().sairSalaEspera(idSalaJogo);		
	}
	@Override
	public void iniciarPartida(String identicadorAdministrador,Long idSalaJogo) throws RemoteException {
		getClienteEntrada().iniciarPartida(identicadorAdministrador,idSalaJogo);
		
	}

	@Override
	public String getIdentificador() throws RemoteException{
		return getClienteEntrada().getIdentificador();
	}
	
	@Override
	public void finalizarSalaJogo() {
		try {
			getClienteEntrada().abrirSalaPrincipal();
		} catch (RemoteException e) {
			e.printStackTrace();
		}
	}
	protected SOClienteEntrada getClienteEntrada() {
		return clienteEntrada;
	}
	protected void setClienteEntrada(SOClienteEntrada clienteEntrada) {
		this.clienteEntrada = clienteEntrada;
	}

}
